উদাহরণ সহ JPA Auditing

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Spring Boot এবং JPA Auditing
173

স্প্রিং বুট (Spring Boot) এবং জাভা পেরসিস্টেন্স এপিআই (Java Persistence API বা JPA) এর মাধ্যমে ডেটাবেসের সাথে যোগাযোগ এবং ডেটার কার্যকরী হ্যান্ডলিং করা হয়। JPA Auditing হলো একটি মেকানিজম যা আমাদের ডেটাবেসের অটোমেটিক ট্র্যাকিং এবং টাইমস্ট্যাম্পিংয়ের সুবিধা দেয়। এটি বিশেষ করে তথ্যের সৃষ্টির সময়, পরিবর্তনের সময় এবং মুছে ফেলার সময় ট্র্যাক করতে ব্যবহৃত হয়।


JPA Auditing কি?

JPA Auditing একটি ফিচার যা আপনাকে আপনার ডোমেইন মডেলগুলিতে স্বয়ংক্রিয়ভাবে তথ্য সংরক্ষণ করতে সহায়তা করে। সাধারণত, যখন ডেটাবেসে কোনো রেকর্ড তৈরি, আপডেট বা মুছে ফেলা হয়, তখন ওই অপারেশনের সাথে যুক্ত সময় এবং ব্যবহারকারী সম্পর্কিত তথ্য সংরক্ষণ করা হয়। এটি আপনাকে ডেটা পরিবর্তনের ইতিহাস ট্র্যাক করতে সহায়ক।

JPA Auditing সাধারণত নীচের তথ্যগুলো ট্র্যাক করে:

  • ক্রিয়েটেড_এট (createdAt): রেকর্ডটি কখন তৈরি হয়েছে।
  • ক্রিয়েটেড_বাই (createdBy): রেকর্ডটি কে তৈরি করেছেন।
  • আপডেটেড_এট (updatedAt): রেকর্ডটি কখন আপডেট হয়েছে।
  • আপডেটেড_বাই (updatedBy): রেকর্ডটি কে আপডেট করেছেন।

JPA Auditing কনফিগারেশন

JPA Auditing ব্যবহারের জন্য, আমাদের কিছু কনফিগারেশন এবং এন্টিটি ক্লাসে কিছু পরিবর্তন করতে হয়।

  1. স্প্রিং বুট কনফিগারেশন:
    প্রথমে, @EnableJpaAuditing অ্যানোটেশন ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশনটি জেপিএ অডিটিং সক্ষম করতে হবে।

    @Configuration
    @EnableJpaAuditing
    public class JpaConfig {
    }
    
  2. এন্টিটি ক্লাসে অডিটেবল ফিল্ড যোগ করা:
    এরপর, আপনার ডোমেইন মডেলে @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশন ব্যবহার করতে হবে।

    উদাহরণস্বরূপ, একটি User এন্টিটি ক্লাস:

    @Entity
    @EntityListeners(AuditingEntityListener.class)
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        private String username;
    
        @CreatedDate
        private LocalDateTime createdAt;
    
        @LastModifiedDate
        private LocalDateTime updatedAt;
    
        @CreatedBy
        private String createdBy;
    
        @LastModifiedBy
        private String updatedBy;
    
        // Getters and Setters
    }
    
  3. অডিটিং কনফিগারেশন:
    @CreatedBy এবং @LastModifiedBy ফিল্ডগুলির জন্য একটি AuditorAware ইমপ্লিমেন্টেশন দরকার, যা জানাবে কে রেকর্ডটি তৈরি বা আপডেট করেছেন।

    @Component
    public class AuditorAwareImpl implements AuditorAware<String> {
    
        @Override
        public Optional<String> getCurrentAuditor() {
            return Optional.of("Admin");  // এখানে আপনি আপনার ব্যবহারকারীর নাম বা আইডি দিতে পারেন।
        }
    }
    

উদাহরণ সহ ব্যবহার

এখন, আমরা দেখতে পারি কিভাবে এই কনফিগারেশন ও অডিটিং কাজ করে।

  1. রেকর্ড তৈরি করা:
    যখন আপনি User এন্টিটির একটি রেকর্ড তৈরি করবেন, তখন createdAt, createdBy ফিল্ডগুলি স্বয়ংক্রিয়ভাবে পূর্ণ হবে।

    @Autowired
    private UserRepository userRepository;
    
    public void createUser() {
        User user = new User();
        user.setUsername("JohnDoe");
        userRepository.save(user);
    }
    
  2. রেকর্ড আপডেট করা:
    যখন আপনি একটি রেকর্ড আপডেট করবেন, তখন updatedAt এবং updatedBy ফিল্ডগুলি আপডেট হবে।

    public void updateUser(Long userId) {
        User user = userRepository.findById(userId).orElseThrow();
        user.setUsername("UpdatedName");
        userRepository.save(user);
    }
    

JPA Auditing স্প্রিং বুট অ্যাপ্লিকেশনের মধ্যে খুবই শক্তিশালী এবং সহজে কনফিগার করা যায়, যা আপনার ডেটাবেস অপারেশনগুলোকে আরও ট্র্যাকযোগ্য ও ব্যবস্থাপনাযোগ্য করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...